package com.example.ai.utils;

/**
 * 线程上下文ID持有者
 * 提供基于线程上下文的用户ID存储与获取功能
 * 适用于需要在多线程环境中传递用户身份信息的场景
 */
public class CurrentHoler {
    // 使用InheritableThreadLocal实现线程间ID传递，支持子线程继承父线程ID
    private static final InheritableThreadLocal<Long> CURRENT_ID = new InheritableThreadLocal<>();

    /**
     * 设置当前线程的用户ID
     * @param id 待存储的用户ID
     */
    public static void set(Long id) {
        CURRENT_ID.set(id);
    }

    /**
     * 获取当前线程的用户ID
     * @return 线程上下文中的用户ID，若无则返回null
     */
    public static Long getCurrentId() {
        return CURRENT_ID.get();
    }

    /**
     * 清除当前线程的用户ID
     * 用于避免线程池场景下的上下文残留问题
     */
    public static void remove() {
        CURRENT_ID.remove();
    }
}